package com.gxa.controller;

import com.gxa.common.R;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 所有的异常统一的交给这个类来处理，最后友好的返回。
 */
@ControllerAdvice //标识统一处理Controller类中所有异常
public class GlobalExceptionHandler {

    @ExceptionHandler(ArithmeticException.class) //监听当前类中所有的方法只要出现ArithmeticException异常就会走这个方法
    @ResponseBody
    public R returnArithmeticException(){
        R r = new R();
        r.setCode(500);
        r.setMsg("系统出现数字除零异常");
        return r;
    }

    @ExceptionHandler(NumberFormatException.class) //监听当前类中所有的方法只要出现ArithmeticException异常就会走这个方法
    @ResponseBody
    public R returnNumberFormatException(){
        R r = new R();
        r.setCode(500);
        r.setMsg("数字转换异常");
        return r;
    }

//    //所有的异常和错误都会进这个方法
//    @ExceptionHandler(Throwable.class)
//    @ResponseBody
//    public R returnException(){
//        R r = new R();
//        r.setCode(500);
//        r.setMsg("所有异常");
//        return r;
//    }
}
